﻿using System.Collections.Generic;
using ORM.Business.Feedbacks;
using ORM.Business.Models;
using ORM.Business.Models.Entities;

namespace ORM.Business.Interfaces
{
    /// <summary>
    /// Performs operations on users
    /// </summary>
    public interface IUserRepository
    {
        //Manage Users
        Feedback<IList<UserState>> GetAllUserStates(); 
        Feedback<IList<user>> GetAllUsers();
        Feedback<IList<user>> GetTopUsers();
        Feedback<IList<user>> GetSimilarUsers(string username);
        Feedback<user> DeleteUser(int id);
        Feedback<user> GetUserDetails(int id);

        //User Profile
        Feedback<user> GetPersonalInfo(int id);
        Feedback<user> UpdateUser(user c, IList<int> roleIds);
        Feedback<string> UpdateUserProfile(user currentUser);
        Feedback<string> RemoveAvatar(int id);
        Feedback<user> ViewOtherUserInformaton(int id);
    }
}
